package compilador.semantico.comando;

import compilador.Command;
import compilador.CommandException;
import compilador.semantico.Atributo;
import compilador.semantico.GerenciadorDeContexto;
import compilador.semantico.TabelaSemantica.TiposPrimitivo;

public class PushResultadoColecaoCommand implements Command {

	@Override
	public void run(String... args) throws CommandException {
		String operacao = args[0];
		GerenciadorDeContexto pilha = GerenciadorDeContexto.getInstance();
		
		if(operacao.equals("size")) {
			pilha.push(new Atributo(TiposPrimitivo.Integer.name()));
		} else if(operacao.equals("exists")) {
			pilha.push(new Atributo(TiposPrimitivo.Boolean.name()));
		} else if(operacao.equals("forAll")) {
			pilha.push(new Atributo(TiposPrimitivo.Void.name()));
		} else if(operacao.equals("select")) {
			String tipo = pilha.top().getTipo();
			pilha.push(new Atributo(tipo, true));
		}
	}
}
